A simplified network will be explained, in order to provide background regarding basic concepts and terminology.
FIG. 1 illustrates a network containing nodes A-F and links L1-L9. The nodes are physical stations, which contain one, or more, computers, and associated equipment. For example, a university's computer system may act as a node. The nodes receive data from other nodes, or from external sources (not shown). The nodes may process the data, but in the present context, their most important function is to store the data temporarily, and forward the data to other nodes.
Links are data transmission channels, used to carry data between nodes. For example, a common telephone line represents one exampletype of link; a satellite communication link and an optical fiber link represents two others.
A common characteristic of networks is that every node is not necessarily connected to every other node. For example, in FIG. 1, node A is not connected to node F. If these two nodes wish to transmit data to each other, they must find a path, such as the combination of links L1+L7 or the combination of links L2+L6.
However, not all paths are equally desirable. One reason is that each link imposes a time delay, and these time delays are not uniform. FIG. 2A provides an example of time delays for the network of FIG. 1, and indicates that the combination L1+L7, mentioned in the previous paragraph, represents a time delay of 6 units, while the combination of L2+L6 represents a longer time delay of 7 units.
In many cases, it is preferred to utilize the path imposing the smallest overall time delay. Well-known algorithms, such as the Dijkstra algortithm, are available for ascertaining these shortest-time paths, for all pairs of nodes in a given network. FIG. 2B provides an example of a table of shortest-time paths for the network of FIG. 1. Some spaces are left blank because they represent redundancy: for example, the time from B to C is the same as that from C to B.
One mode of utilizing such tables resides in "next-hop" routing. In next-hop routing, each node does not refer to the entire contents of the shortest-path table, but, instead, utilizes an abbreviated table, termed a "routing table," which is derived from the shortest-path table.
FIG. 3 illustrates the next-hop routing table 2 used by node F. If node F wishes to transmit data to node A, node F routes the data to node B, as indicated. Node B, according to its own next-hop routing table (not shown), then routes the data to node A. The indirect path is F-to-B-to-A, using the link pair L7+L1 of FIG. 2A, consistent with the shortest-path table of FIG. 2B, for the node-pair (F, A).
One problem with next-hop routing, as just described, is that, as a matter of probability, the links having the shortest delay times are those most likely to appear in the shortest-time table of FIG. 2B, and thus most likely to be used in the routing tables. Consequently, under conditions of high data traffic, the nodes at the ends of these links can become congested. When congestion occurs, data traffic at these nodes can become stalled temporarily.
The congestion, in effect, causes the transit times shown in FIG. 2A to increase. However, the nodes continue to route their packets along the same paths, despite these increases, because the routing tables do not change: they are static. Static routing tables do not accommodate network congestion well, because they do not take into account the variable nature of network traffic.